from __future__ import absolute_import
import os
from celery import Celery
from . import settings

# 只要是想在自己的脚本中访问Django的数据库等文件就必须配置Django的环境变量
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'comp_test.settings')

# app名字
app = Celery('comp_test')

# 配置celery


class Config:
    BROKER_URL = 'redis://127.0.0.1:6379'
    CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379'

    CELERY_ACCEPT_CONTENT = ['application/json']  # 指定任务接受的内容类型(序列化)
    CELERY_TASK_SERIALIZER = 'json'  # 任务的序列化方式
    CELERY_RESULT_SERIALIZER = 'json'  # 任务执行结果的序列化方式
    CELERY_TIMEZONE = 'Asia/Shanghai'  # 时区设置，计划任务需要，推荐 Asia/Shanghai
    ENABLE_UTC = False  # 不使用UTC时区
    CELERY_TASK_RESULT_EXPIRES = 60 * 60  # celery任务执行结果的超时时间
    CELERY_ANNOTATIONS = {'*': {'rate_limit': '500/s'}}
    # CELERYD_PREFETCH_MULTIPLIER = 10  # 每次取任务的数量
    CELERYD_MAX_TASKS_PER_CHILD = 16  # 每个worker执行了多少任务就会死掉，防止内存泄漏


app.config_from_object(Config)
# 到各个APP里自动发现tasks.py文件
app.autodiscover_tasks()
